package Harmonisation;

import java.util.ArrayList;

public class Accord {
	private String tonique;
	private String tierce;
	private String quinte;
	private String numero;
	private ArrayList<Accord> enchainementPossible;

	public Accord(String tonique, String tierce, String quinte, String numero) {
		this.tonique = tonique;
		this.tierce = tierce;
		this.quinte = quinte;
		this.numero = numero;
		this.enchainementPossible = new ArrayList<Accord>();
	}

	/**
	 * 
	 * @param n
	 *            Note que l'on est en train de comparer
	 * @return boolean vrai si la note est la note est la tonique/tierce/quinte
	 */
	public boolean appartientALAccord(Note n) {
		if (n.getNom().equals(tonique) || n.getNom().equals(tierce) || n.getNom().equals(quinte)) {
			return true;
		}
		return false;
	}

	private boolean estTierce(String note) {
		return (note.equals(tierce));
	}

	private boolean estQuinte(String note) {
		return (note.equals(quinte));
	}

	public boolean estTonique(String note) {
		return (note.equals(tonique));
	}

	public boolean EstVoisin(Accord a)/* si this pointe vers a */
	{
		return enchainementPossible.contains(a);
	}

	public ArrayList<Accord> getEnchainementPossible() {
		return enchainementPossible;
	}

	private String getNumero() {
		return numero;
	}

	public String toString() {
		return this.numero;
	}

	public boolean estTonique(Note note) {
		return estTonique(note.getNom());
	}

	public boolean estTierce(Note note) {
		return estTierce(note.getNom());
	}

	public boolean estQuinte(Note note) {
		return estQuinte(note.getNom());
	}

	@Override
	public boolean equals(Object o) {
		if (o instanceof Accord) {
			Accord a = (Accord) o;
			if (this.getNumero().equals(a.getNumero())) {
				return true;
			}
		}
		return false;

	}

}
